/**
 * Copyright (C), 2024, xxxx有限公司
 * FileName: DateTypeExample
 * Author:   TLVM
 * Date:     3/23/2024 12:33 PM
 * Description: 时间日期类型Date
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.iqcctt.simpleflow.typeengine.example;

import com.iqcctt.simpleflow.annotation.SimpleFiledFlow;
import com.iqcctt.simpleflow.exception.SimpleFlowException;
import com.iqcctt.simpleflow.typeengine.TypeInterface;
import org.apache.commons.lang3.StringUtils;

import java.lang.reflect.Field;
import java.util.Date;
import java.util.Optional;

/**
 * 〈一句话功能简述〉<br>
 * 〈时间日期类型Date〉
 *  当defValue为now时是当前时间
 * @author TLVM
 * @create 3/23/2024
 * @since 1.0.0
 */
public class DateTypeExample extends ToolsExtends implements TypeInterface {
    @Override
    public void load(Object result, Field field, SimpleFiledFlow simpleFiledFlow, int msg) throws NoSuchFieldException, IllegalAccessException {
        if(StringUtils.isNotBlank(simpleFiledFlow.defValue())&&simpleFiledFlow.defValue().equals("now")){
            setFieldValue(result,field.getName(),new Date());
        }else{
            Optional.ofNullable(getValue(result, field.getName()))
                    .orElseThrow(() -> new SimpleFlowException((msg==0?"全局控制":"局部控制")+"当前节点指定字段不能为空，字段"+field.getName()));
        }
        //日期不进行默认长度判断
    }
}
